package com.example.micro_property_springboot.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.example.micro_property_springboot.pojo.AssetCheckItem;
import com.example.micro_property_springboot.pojo.DTO.request.AssetCheckItemRequest;

import java.util.List;
import java.util.Map;

public interface AssetCheckItemService extends IService<AssetCheckItem> {
    /**
     * 创建盘点明细
     * @param planId 盘点计划ID
     * @param assetIds 资产ID列表
     */
    void createAssetCheckItems(Long planId, List<Long> assetIds);

    /**
     * 标记资产为已盘点
     * @param planId 盘点计划ID
     * @param request 盘点执行请求
     * @param userId 当前用户ID
     * @return 盘点明细
     */
    AssetCheckItem checkAsset(Long planId, AssetCheckItemRequest request, Long userId);

    /**
     * 获取盘点明细列表
     * @param planId 盘点计划ID
     * @param checkStatus 盘点状态
     * @return 盘点明细列表
     */
    List<AssetCheckItem> getAssetCheckItems(Long planId, String checkStatus);

    /**
     * 获取盘点进度
     * @param planId 盘点计划ID
     * @return 盘点进度（已盘点数量/总数量）
     */
    Map<String, Integer> getCheckProgress(Long planId);

    /**
     * 批量处理资产盘点
     * @param planId 盘点计划ID
     * @param requests 资产盘点请求列表
     * @param userId 当前用户ID
     * @return 处理后的资产盘点明细列表
     */
    List<AssetCheckItem> batchCheckAssets(Long planId, List<AssetCheckItemRequest> requests, Long userId);
    /**
     * 重置资产盘点状态
     * @param planId 盘点计划ID
     */
    void resetCheckStatus(Long planId);

    /**
     * 获取资产盘点统计信息
     * @param planId 盘点计划ID
     * @return 资产盘点统计信息（已盘点数量、未盘点数量、资产总数）
     */
    Map<String, Object> getCheckStatistics(Long planId);
}
